MULTI-MEDIA USB DATA TRANSFER OVER DIGITAL INTERACTION INTERFACE FOR VIDEO AND AUDIO (DiiVA)

ABSTRACT

A system for delivering USB data over a DiiVA network may include a USB host controller, at least one USB device, a first DiiVA device connected to the USB host controller through an upstream USB port, a second DiiVA device connected to the USB device through a downstream USB port; and a network configured to transfer data between the first DiiVA device and the second DiiVA device according to USB protocol through a DiiVA bi-directional hybrid link in the network. The network is responsive to the USB host controller to deliver contents for the USB protocol through at least one line state information packet and at least one USB data packet transmitted through the hybrid link between the upstream USB port and the downstream USB port.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is based upon, and claims the benefit ofpriority under 35 U.S.C. §119, to co-pending U.S. Provisional PatentApplication No. 61/294,476 (the “'476 provisional application”), filedJan. 12, 2010 and entitled “Multi-Media Data Transfer And NetworkManagement Over A Cable Having Both Bi-Directional And Uni-DirectionalLinks.” The content of the '476 provisional application is incorporatedherein by reference in its entirety as though fully set forth.

The present application is related to U.S. patent application Ser. No.12/057,051, entitled “Bi-Directional Digital Interface For Video AndAudio (DIVA),” filed Mar. 27, 2008, and U.S. patent application Ser. No.12/636,063, entitled “Power Delivery Over Digital INTERFACE FOR VIDEOAND AUDIO (DiiVA),” filed Dec. 11, 2009. Both applications areincorporated herein by reference in their entireties.

BACKGROUND

DiiVA (Digital Interactive Interface For Video And Audio) is abi-directional audio/video interface that allows uncompressedhigh-definition video, as well as multi-channel audio, high-bandwidth,and bi-directional data to be transferred over a single cable. Inaddition to uni-directional video channels, DiiVA implements abi-directional hybrid data channel capable of transporting differenttypes of data, including but not limited to audio data, control data,Ethernet data, and bulk data.

The USB (Universal Serial Bus) specification is widely used in order toestablish communication between various devices and a host controllersuch as a personal computer, having now effectively taken the place of anumber of previously implemented interfaces such as serial and parallelports.

Methods and systems are needed for reliably transferring USB data overnetworks such as DiiVA.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings disclose illustrative embodiments. They do not set forthall embodiments. Other embodiments may be used in addition or instead.When the same numeral appears in different drawings, it is intended torefer to the same or like components or steps.

FIG. 1 illustrates one example of a USB connection with a DiiVA network,in accordance with one embodiment of the present disclosure.

FIG. 2 is a block diagram of a system configured to communicate USB dataover a DiiVA network, in accordance with one embodiment of the presentdisclosure.

FIG. 3 illustrates turn-around time constraint in USB, in accordancewith one embodiment of the present disclosure.

FIG. 4A illustrates one example of a Hybrid Link USB packet, inaccordance with one embodiment of the present disclosure.

FIG. 4B is a table illustrating the SSINFO Field of the Hybrid Link USBpacket shown in FIG. 3

FIG. 5 schematically illustrates one example of high-speed USBenumeration, in accordance with one embodiment of the presentdisclosure.

FIG. 6 illustrates an example of control transfer in DiiVA USB, inaccordance with one embodiment of the present disclosure.

DESCRIPTION

In the present disclosure, methods and systems are disclosed fortransfer of USB data and multi-media data over networks such as DiiVAwhich includes a bi-directional hybrid link as well as uni-directionallinks. DiiVA is a bi-directional audio/video interface that can allowsuncompressed high-definition video, multi-channel audio, andhigh-bandwidth, bi-directional data to be all transferred over a singlecable. In particular, DiiVA implements a bi-directional hybrid linkcapable of carrying audio, control, and bulk (Ethernet and USB) data,and status information. DiiVA also includes uni-directional video linksdedicated to carrying noncompressed video pixel data andsynchronization.

In some embodiments, DiiVA cable contain four twisted pairs, one ofwhich is the hybrid link, and the remaining three of which comprise theuni-directional video links. DiiVA allows users to connect, configureand control a plurality of consumer electronic devices (includingwithout limitation DVD players, digital video recorders, set top boxes,personal computers, camcorders, cameras, and home stereo systems, justby way of example) from their digital TV or other DiiVA node.

Full details regarding USB are available in references such as “USB 2.0specification” and “USB 3.0 specification,” which are publicly availablethrough the internet, and which are incorporated herein by reference intheir entireties.

The techniques disclosed in the present disclosure may be used for thetransfer of multi-media data and network management in any other system(i.e., system other than DiiVA) that includes the capability of bothuni-directional and bi-directional data transfer over a single cable.

Illustrative embodiments are discussed. Other embodiments may be used inaddition or instead.

FIG. 1 schematically illustrates one example of a USB connection in aDiiVA network. As illustrated in FIG. 1, in some embodiments of thepresent disclosure one or more DiiVA Hybrids Link serve to extend theUSB connection through a DiiVA network 110. Using the methods andsystems described in the present disclosure, USB in DiiVA can seamlesslyconnect a USB host 120 to at least one USB device 130 to the DiiVAnetwork 110. The DiiVA network 110 can function as if there were only aUSB cable between the USB host 120 and the USB device 130. The DiiVAnetwork as a whole, inclusive of the USB device 130, can function as ifthere were only a USB device 130 connected to the USB host 120 through aUSB cable and a USB upstream port, i.e., a USB port that faces upstream.

FIG. 2 is a schematic block diagram of a system 200 configured tocommunicate USB data over a DiiVA network 210, in accordance with oneembodiment of the present disclosure. The system 200 includes a USB hostcontroller 220 (for example a personal computer) connected to at leastone USB device 230 (examples of which include without limitation awebcam or a memory stick) through a USB connection. The USB connectionrequires two DiiVA devices, DiiVA device A (shown with reference numeral205) and DiiVA device B (shown with reference numeral 206), oneconnected to the USB host 220 and the other connected to the USB device230.

In the embodiment illustrated in FIG. 2, USB host 220 is connected to aUSB upstream port 225 of DiiVA device A (205), and USB device 230 isconnected to USB downstream port 226 of DiiVA device B (206). Ingeneral, a DiiVA device can have multiple USB upstream ports or multipleUSB downstream ports, as seen in FIG. 2. In sum, the system 200 thusincludes a first DiiVA device 205 connected to the USB host controller220 through an upstream USB port 225, a second DiiVA device 206connected to the USB device 230 through a downstream USB port 226; and aDiiVA network 210 connecting the two DiiVA devices 205 and 206.

The DiiVA network 210 includes at least one bi-directional DiiVA hybridlink 240, and transfers data through the link between the first DiiVAdevice 205 and the second DiiVA device 206, according to USB protocol.

The elements in the DiiVA network 210, including but not limited to thehybrid link 240, and the first and second DiiVA device 205 and 206, allinclude hardware such as a processor or controller configured to carryout the functions described in the present disclosure.

The network 210 is responsive to the USB host controller 220 to delivercontents for the USB protocol by transmitting through the hybrid link240 at least one line state information packet and at least one USB datapacket, between the upstream USB port 225 and the downstream USB port226.

The first 205 and second 206 DiiVA device each include a USB PHY(physical layer) 232 connected to logical module 234 through aninterface 236. The logical module 234 may be a transceiver havingbi-directional connection and configured to carry and sharemulti-protocol data. In some embodiments, the interface 236 is UTMI (USB2.0. Transceiver Microcell Interface) or ULPI (UTMI+Low Pin Interface).In other embodiments, interfaces other than UTMI or ULPI may be used.

In general, USB protocol relies on line state information, or the stateof D+ and D−, and has limitations on turn-around time and the cablelength. A DiiVA network, however, does not guarantee delivery time andthus take a long time.

FIG. 3 illustrates such a turn-around time constraint in USB, inaccordance with one embodiment of the present disclosure. USB protocoldefines the bus turn-around time limitation and it is considered aserror if the response does not arrive within given time. However, DiiVAprotocol itself does not guarantee the Hybrid Link Packet delay. Toovercome this limitation, USB in DiiVA uses USB flow-control protocolwith NAK for Bulk/Control/Interrupt Transfer.

USB protocol defines both minimum and maximum period of the turn-aroundtime and the inter-packet delay. The minimum period can be controlled bybuffering the USB data packet. But the maximum period cannot be easilymet because DiiVA network has inherent network delay and also does notguarantee the inter-packet delay. This issue affects the bus turn-aroundtiming in two ways. One is when USB host waits and the other is when USBdevice waits as shown in FIG. 3.

In the present disclosure, DiiVA specific protocols for USB aredescribed that overcome these limitations. Examples include withoutlimitation The line state emulation, flow-control mechanism, andspeculative ACK/NAK. By using these protocols, any USB host to any USBdevice point-to-point connection can be made through a DiiVA network.Multiple point-to-point connections also are possible under DCLmanagement.

USB line state information is available only when the USB host and theUSB device are physically connected. As shown in FIG. 2, however, theDiiVA network 210, the USB host 220 and the USB device 230 are notdirectly connected, so line state information is not readily available.

In DiiVA, all of the line state information and generic USB packets aredelivered in the form of hybrid link packet. In some embodiments of thepresent disclosure, line state information at the UTMI (or ULPI)interface 260 of USB host 220 and USB device 230 is delivered over theDiiVA network 210 by a hybrid link USB packet to the other side of theUSB host 220 and the USB device 230. The line state information packettransmitted through the hybrid link 240 contains packetized line stateinformation about one or more events.

FIG. 4A illustrates one example of such a hybrid link USB packet 400, inaccordance with one embodiment of the present disclosure. Source anddestination information, i.e. the exact USB port, can be specified witha combination of CH_ID and Service ID information.

Other than such source and destination information, the hybrid link USBpacket contains a variety of USB related information. The SSINFO fieldof Hybrid Link USB Packet carries this information. FIG. 4B is a tableillustrating the line state events for which information is containedthe SSINFO field of the hybrid link USB packet shown in FIG. 4A.

In the table shown in FIG. 4B, the prefix UU_indicates the packetdirection from USB Upstream-facing port to USB Downstream-facing port.UD_prefix indicates the reverse direction. J state and K statedefinitions in FIG. 4B follow those for full-speed USB as set forth inthe USB 2.0 specification. Address and Endpoint fields, between bits 16and 27, indicate the generic USB Packet USB address and USB endpoint.

Using the line state information packet described in conjunction withFIG. 4A and FIG. 4B, operations such as USB enumeration, USBsuspend/resume, and flow control can be performed over a DiiVA network.In the system 200 shown in FIG. 2, a transmitting USB port packetizesall line state information and transmits the packetized information to areceiving USB port. The receiving USB port sets the UTMI or ULPIinterface to emulate the line state behavior of the transmitting USBport.

In some embodiments, the upstream USB port 225 is the transmitting USBport and the downstream USB port 226 is the receiving USB port. In otherembodiments, the upstream USB port 225 is the receiving USB port and thedownstream USB port 226 is the transmitting USB port.

Enumeration in USB is a process of determining what device has just beenconnected to the bus, and what parameters (such as power consumption,number of endpoints etc.) it requires. The USB device enumerationprocess thus starts when a USB device is first connected to a USB host.The USB host assigns the device a unique address and sets up aconfiguration that allows the device to transfer data on the bus.

FIG. 5 schematically illustrates one example of a method 500 ofperforming high-speed USB enumeration in a DiiVA network, in accordancewith one embodiment of the present disclosure.

In this embodiment, a high-speed USB device is attached to a USBdownstream port 515, as illustrated in step 510, namely USB deviceattach. A UD_FS_DEVICE_READY packet 518 is then sent to a USB upstreamport 516. The USB host is attached, as shown in the step 520, namely USBhost Plug In. VBus assertion in the USB upstream port 516 is detected.The USB upstream port 516 sends UU_VBUS_DETECT 524 to the USB downstreamport 515 and the USB downstream port 515 deasserts VBus, as shown in thedeassertion step, 525.

The USB upstream port 516 sends UU_VBUS_ENABLE 532 to the USB downstreamport 515 and the USB downstream port 515 asserts Bus, step 522. The USBdownstream port 515 detects J state, step 534, and sends UD_J_STATE 536to the USB upstream port 516. The USB upstream port 516 detects USBReset from the USB host, step 540, and sends UU_USB_RESET 542.

The USB downstream port 515 then detects K Chip in step 546, and sendsUD_K_STATE 544. The USB downstream port 515 detects SE0 state and sendUD_SEO_STATE 548.

In step 550, toggling K-J Chirps are detected and UU_K_STATE 552 andUU_J_STATE 554 are sent to the USB downstream port 515. Finally SOF isdetected from the USB host in step 560, and high-speed enumeration iscomplete.

In other embodiments of the present disclosure, USB Full Speedenumeration and/or USB Low Speed enumeration may be performed. In theseembodiments, performing Full Speed enumeration may comprise the acts of:

attaching a full-speed USB device to the downstream USB port, andsending an FS Device Ready event packet to the upstream USB port;

attaching the USB host controller, and when Bus is asserted, theupstream USB port sending Bus detect event packet to downstream USB portand disserting Bus in the downstream USB port;

the upstream USB port sending Bus Enable event packet to downstream USBport, and the downstream USB port asserting Bus;

the downstream USB port detecting J State, and sending J State eventpacket;

the upstream USB port detecting USB Reset from the USB host controllerand sending USB Reset event packet; and

detecting J State in upstream USB port and sending J State Event packetto the downstream USB port; and detecting SOF packet from the USB hostso that full-speed enumeration is done.

In other embodiments, Low Speed enumeration may be performed. In theseembodiments, performing Low Speed enumeration may comprise the acts of:

attaching a low-speed USB device to the downstream USB port and sendinga LS Device Ready event packet to the upstream USB port;

attaching the USB host controller, and when VBus is asserted, theupstream USB port sending VBus detect event packet to the downstream USBport and deasserting VBus in the downstream USB port;

the upstream USB port sends VBus Enable event packet to the downstreamUSB port, and the downstream USB port asserting Vbus;

the downstream USB port detecting K State, and sending K State eventpacket; the upstream USB port detecting USB Reset from the USB hostcontroller and sending USB Reset event packet;

the upstream USB port detecting K state, and sending the K State Eventpacket to the downstream USB port; and

detecting SOF packet from the USB host so that low-speed enumeration isdone.

In some embodiments, a USB Suspend and Resume operation may beperformed. In these embodiments, the following acts may be performed:

detecting a 3 ms Idle State, and generating a 3 ms Idle event packet anddelivering same to downstream port;

if previous speed was high-speed USB, upstream port checking whether 3ms idle is suspend state or USB Reset according to USB specification andUTMI specification; and

if upstream USB port detects K State, upstream USB port generating KState event packet and going to Resume state.

During an IN transaction, USB host expects Data packet or handshakeafter IN is issued within maximum bus turn-around time. The OUTtransaction requires the same constraint on the handshake afterOUT/SETUP and Data is transmitted. To resolve this issue in USB hostside, the USB Upstream-facing port in DiiVA device uses NAK with a flowcontrol mechanism illustrated in FIG. 6, in one embodiment of thepresent disclosure.

In the Setup Stage 610, an USB upstream port 625 receives SETUP anddelivers the SETUP USB packet to a USB downstream port 626. Thedownstream USB port 626 buffers this SETUP until next DATA is availableon the downstream USB port. Meanwhile, the upstream USB port 625 sends aspeculative ACK even if ACK from USB device is not available. When theDATA arrives at the downstream USB port 626, the downstream USB port 626starts to send SETUP and DATA and receives ACK.

In the Data/Status Stage 610, the IN transaction and OUT transactionoccur as follows: the upstream USB port 625 receives IN and delivers tothe downstream USB port 626. The downstream USB port 626 sends IN andget the response from the USB device. Meanwhile, the upstream USB port625 first sends NAK for IN or OUT/DATA until DATA or handshake areavailable from the USB device.

At the USB device side, if the USB device sends NAK for IN or OUT/DATAand NAK arrives at the USB upstream port 625, the USB upstream port 625unblocks the next coming IN or OUT/DATA and delivers to the USBdownstream port 626 to send IN or OUT/DATA to the USB device again withNAK handshake to the USB host. If the USB device sends DATA for IN orACK for OUT/DATA and DATA or ACK arrives at the USB upstream port 625,the USB downstream port 626 responds with ACK for IN transaction anddelivers this DATA for IN or ACK for OUT to the USB upstream port 625.The USB upstream port 625 sends DATA for next IN available or ACK fornext OUT/DATA available.

The USB upstream port 625 always responds with ACK for SETUP transactionbecause it is required to receive SETUP and DATA and responds with ACKaccording to USB Specification.

The USB downstream port 626 buffers OUT or SETUP until next coming DATAis available in the USB downstream port 626 to guarantee theinter-packet delay between OUT/SETUP and DATA.

USB supports a number of different types of data transfers: isochronous,interrupt, bulk, and control transfers. Isochronous transfers occur atsome guaranteed data rate but with possible data loss, for example forreal time audio or video. Interrupt transfers are used for devices thatneed guaranteed quick responses (bounded latency), such as pointingdevices and keyboards. Bulk transfers are large sporadic transfers thatuse all remaining available bandwidth, but have no guarantees onbandwidth or latency, such as file transfers. Control transfers aretypically used for short, simple commands to the device, and a statusresponse, used, for example, by the bus control pipe number 0.

Instead of using flow control mechanism by sending NAK for IN orOUT/DATA, isochronous transfers use zero data and pipelines INtransaction scheme. For the first multiple isochronous INs, the USBupstream port responds with zero data, which is legitimate in the USBspecification. This first IN is delivered to a USB downstream port andgets the DATA from an isochronous USB device. This first DATA is used toreply to the next isochronous IN when it arrives at USB upstream module.In this way, the USB host receives the delayed and pipelined isochronousDATA from the USB device.

If the USB host stops to send isochronous IN, the last remaining DATApackets are dropped.

An isochronous OUT transaction is delivered to the USB downstream portwithout NAK. The inter-packet delay between OUT and DATA should bemaintained by buffering OUT until DATA is available in the USBdownstream port.

To respond properly to the isochronous IN without NAK response, the USBupstream port should know which USB address and USB endpoint are usedfor isochronous transfer. To obtain this information, DiiVA USB shouldhave the capability to decode the descriptor from the USB device.

Decoding descriptor can be done by analyzing the hybrid link USB packet,or the USB downstream port may have USB Host capability to enumerate andread out the descriptor from the USB device before connecting a USBupstream port to a USB downstream port. The descriptor decoding methodis implementation-dependent and other implementations are possible.

According to the USB specification, high bandwidth isochronous INendpoints must support data PID sequencing depending on the DATA size.Because DATA size from isochronous USB devices vary, the number of INsper micro frame is different in every frame. Therefore, the mechanism ofsimply delivering isochronous IN from the USB upstream port to the USBdownstream port cannot meet USB specification.

DiiVA USB supports high bandwidth isochronous IN endpoints by thefollowing method: only the first isochronous IN per micro frame isdelivered. When the USB downstream port receives the DATA forisochronous IN, it itself should decide how many INs need to be sentbased on the DATA PID. If first Data PID is DATA0, the USB downstreamport behaves like above pipelined isochronous transfer scheme. If thefirst Data PID is DATA2, the USB downstream port generates two more sameINs in the same micro frame. If the first Data PID is DATA1, the USBdownstream port generates one more same IN. The USB upstream port shouldhave enough buffer to accommodate the maximum DATA size per frame inhigh bandwidth isochronous endpoint.

In some embodiments, a method of delivering USB data through a hybridlink with an isochronous IN token may comprise the following acts:

the DATA packet using zero data and pipelining IN Data, wherein thenumber of states for IN DATA depends on latency of connection;

for first, or first multiple, isochronous IN packets, an upstream portresponding with one or more zero data packets;

delivering said first, or first multiple, IN packets to a downstreamport and receiving the DATA0 or DATA1 or DATA2 packet from anisochronous USB device;

pipelining these DATA packets to reply with isochronous IN packets;

if the USB host stops sending isochronous IN packets, dropping the lastand remaining DATA; and

the upstream USB port finding out which endpoint and address are usedfor isochronous endpoint, by monitoring and decoding USB descriptor fromDATA packet stream.

In some embodiments, a method of delivering USB data through a hybridlink with an isochronous OUT token may comprise:

sending an isochronous OUT transaction out to the downstream port,wherein the upstream port does not send according to USB protocol;

the downstream USB port buffering OUT packet until DATA0 or DATA1 orDATA2 or MDATA packet is available;

when DATA0 or DATA1 or DATA2 or MDATA packet is available, sending OUTpacket and DATA0 or DATA1 or DATA2 or MDATA packet to USB device; and

the upstream USB port finding out which endpoint and address are usedfor isochronous endpoint by monitoring and decoding USB descriptor fromDATA packet stream.

In the present disclosure, non-isochronous transfers of USB data mayalso be performed using DiiVA specific protocols. In some embodiments,USB data may be delivered with a non-isochronous IN token, by performingthe following acts:

an upstream USB port receiving an IN packet and delivering same todownstream USB port;

a downstream USB port sending the IN packet and receiving a Data packetor a handshake packet from a USB device;

an upstream USB port sending NAK packet and blocking the next incomingIN packet with a NAK packet until the response from USB device isavailable;

if a USB device sends NAK packet for IN packet and NAK packet arrives atupstream USB port from downstream USB port, upstream USB port unblockingthe next incoming IN packet and delivering to downstream port to send INpacket to USB device again;

if USB device sends a DATA0 or aDATA1 packet and the DATA0 or the DATA1packet arrives in upstream USB port, the downstream port responding withan ACK packet and delivers the DATA0 or the DATA1 packet to the upstreamport; and

the upstream port sending the DATA0 or DATA1 packet for the nextavailable IN packet.

In some embodiments, USB data may be delivered with a non-isochronousOUT token, by performing the following acts:

an upstream USB port receiving an OUT packet and either a DATA0 or aDATA1 packet and delivering to a downstream USB port;

the downstream USB port buffering the OUT packet until the DATA0 or theDATA1 packet is available, and when the DATA0 or the DATA1 packet isavailable, sending the OUT packet and the DATA0 or the DATA1 packet to aUSB device;

the upstream USB port sending a NAK packet for the OUT transaction andnot delivering the next incoming OUT packet and DATA0 or DATA1 packetuntil the response from downstream USB port is available;

if the USB device sends a NAK packet for the OUT transaction anddownstream USB port sends a NAK packet to the upstream USB port, theupstream USB port delivering the next incoming OUT packet and the DATA0or DATA1 packet to the downstream port again; and

if the USB device sends an ACK packet, the upstream port sending ACK forthe next OUT transaction.

In the present disclosure, transfer of USB data may be performed usingPING packets.

In some embodiments, PING protocol is implemented when the USB host getsNAK for OUT transaction. In these embodiments, the USB upstream portresponds with NAK and does not deliver the PING packet to the USBdownstream port. The USB upstream port blocks PING and keeps sending NAKuntil the response for OUT transaction from the USB device is available.

If the USB device responds with ACK for OUT transaction, the USBupstream port responds with ACK for the next PING and also responds withACK for next OUT transaction. This last OUT transaction is not deliveredto the USB downstream port because the USB device already accepted thefirst OUT transaction.

If the USB device responds with NAK for the OUT transaction, the USBupstream port delivers the next PING to the USB downstream port.

If the USB device responds with ACK for PING and PING arrives at the USBupstream module, the USB upstream module responds with ACK for next PINGand responds with ACK for next OUT transaction. This last OUTtransaction is delivered to the USB device and is expected to beresponded with ACK.

If the USB device responds with NAK for PING and PING arrives at the USBupstream port, the USB upstream port responds with NAK for next PING andPING is delivered to the USB device again. This step is repeated untilthe USB device responds with ACK for PING. And the scenario follows theabove step when the USB device responds with ACK.

In sum, a method of delivering data through a hybrid link using a USBPING packet may comprise:

an upstream USB port responds with NAK packet to OUT transaction;

an upstream USB port responding with NAK packet, and delivering PINGpacket to a downstream USB port;

the upstream USB port not delivering PING packet, and continuing to sendNAK packet until the response from USB device is available;

if a USB device responds with ACK packet for OUT transaction, theupstream USB port responding with ACK packet for the next incoming PINGpacket and responding with ACK packet for the next OUT transaction;wherein the last OUT transaction is not delivered to the downstream USBport;

if the USB device responds with NAK packet for OUT transaction and NAKpacket is delivered to upstream USB port, the upstream USB portdelivering next PING packet to the downstream USB port;

if the USB device responds with NAK packet with PING packet and NAKpacket is delivered to the upstream USB port, the upstream USB portdelivering the next PING packet to the downstream USB port;

if the USB device responds with ACK packet with PING packet and ACKpacket is delivered to upstream USB port, the upstream USB portresponding with ACK packet for next PING packet;

the next OUT transaction responding with ACK packet; and

delivering these OUT packets and DATA0 or DATA1 packets to downstreamUSB port to send to USB device.

In other embodiments, PING is used without a preceding OUT transaction.In these embodiments, the USB upstream port responds with NAK anddelivers PING to the USB downstream port. The USB upstream port does notdeliver PING and keeps sending NAK until the response from the USBdevice is available.

If the USB device responds with ACK for PING, the USB upstream portresponds with ACK for next PING and also responds with ACK for next OUTtransaction. In this case, this last OUT transaction is delivered to theUSB downstream port unlike the first scenario because no OUT transactionis delivered to the USB device yet.

If the USB device responds with NAK for PING and PING arrives at the USBupstream port, the USB upstream port responds with NAK for next PING anddelivers PING to the USB downstream port. This step is repeated untilthe USB downstream port gets ACK from the USB device. The acts when USBdevice responds with ACK, as described above, are then followed.

When the USB device responds with NYET for OUT Transaction, the DiiVAUSB module considers NYET as ACK and the USB upstream port always sendsACK instead of NYET.

In sum, a method of delivering data through a hybrid link using a USBPING packet may comprise:

an upstream USB port responding with NAK packet and delivering PINGpacket to a downstream USB port;

the upstream USB port not delivering PING packet and continuing to sendNAK packet until response from USB device is available;

if USB device responds with ACK packet for PING packet and ACK packet isdelivered to upstream USB port, the upstream USB port responding withACK packet for the next PING packet and responding with ACK for the nextOUT transaction; and

delivering the OUT packet and DATA0 or DATA1 packets to downstream port;

wherein there is no preceding OUT transaction before the upstream USBport receives PING packet.

In some embodiments, USB address management in a DiiVA network may beperformed as follows. A USB upstream port can be attached to any hubdownstream port, and packets with various USB addresses can bebroadcasted to the USB upstream port. The USB upstream port should beable to recognize which USB address is assigned to the USB upstream portand it should not respond to generic USB packets for any other USBDevice.

After USB Reset is detected in the USB upstream port, the USB upstreamport accepts only generic USB packet with USB Address 0. By monitoringand decoding SET_ADDRESS standard USB device request, the USB upstreamport recognizes which USB address is assigned to the USB device in theUSB downstream port.

After detecting SET_ADDRESS standard USB Device request, the USBupstream port only responds with generic USB packets with the newlyassigned USB address. If USB Reset is detected in the USB upstream port,it resets the assigned USB address to 0 and waits for SET_ADDRESSstandard USB device request again. Decoding SET_ADDRESS Device requestis implementation specific.

In sum, a method of USB address management in a DiiVA network maycomprise:

after USB Reset is detected in the upstream USB port, the upstream USBport accepting only packets that have USB Address 0.

the upstream port recognizing which USB address is assigned to the USBdevice in the downstream port by monitoring and decoding SET_ADDRESSstandard USB device request;

after detecting SET_ADDRESS standard USB device request, the upstreamport only responding with packets with new USB address which is assignedwith SET_ADDRESS standard USB device request; and

USB Reset resetting the assigned USB address to 0 and waiting forSET_ADDRESS standard USB device request again.

In some embodiments, Keep-Alive forwarding in a DiiVA network may beperformed as follows. When the enumeration state goes to LS_ENUM_DONE,the USB upstream port starts to monitor line state. When first togglingof line state is detected, it is considered as first Keep-Alivesignaling. The USB upstream port sets the internal timer forT_KEEP_ALIVE and when it is expired, it starts to monitor line statetoggling again to detect Keep-Alive. In some embodiments, T_KEEP_ALIVEis set to 0.98 ms. Keep-Alive signaling is delivered to USB DownstreamModule through UU_KEEP_ALIVE.

In sum, a method of performing USB low speed Keep-Alive signaling in aDiiVA network may comprise:

after low-speed USB enumeration is done, the upstream USB port startingto monitor line state;

when first change of line state is detected, considered that to be thefirst Keep-Alive signaling;

the upstream USB port setting the internal timer for T_KEEP_ALIVE andwhen it is expired, the upstream USB port monitoring whether line stateis toggling again, to detect Keep-Alive and deliver Keep Alive eventpacket to downstream USB port.

In the present disclosure, methods and systems have been describedrelating to the transfer of USB and multi-media data over DiiVA, andnetwork management in DiiVA. The components, steps, features, objects,benefits and advantages that have been discussed are merelyillustrative. None of them, nor the discussions relating to them, areintended to limit the scope of protection in any way. While certainembodiments have been described of systems and methods relating to USBdata transfer over DiiVA, it is to be understood that the conceptsimplicit in these embodiments may be used in other embodiments as well.Numerous other embodiments are also contemplated, including embodimentsthat have fewer, additional, and/or different components, steps,features, objects, benefits and advantages. The components and steps mayalso be arranged and ordered differently. Nothing that has been statedor illustrated is intended to cause a dedication of any component, step,feature, object, benefit, advantage, or equivalent to the public.

In the present disclosure, reference to an element in the singular isnot intended to mean “one and only one” unless specifically so stated,but rather “one or more.” All structural and functional equivalents tothe elements of the various embodiments described throughout thisdisclosure, known or later come to be known to those of ordinary skillin the art, are expressly incorporated herein by reference.

What is claimed is:
 1. A system comprising: a USB (Universal Serial Bus)host controller and at least one USB device; a first device connected tothe USB host controller through an upstream USB port; a second deviceconnected to the USB device through a downstream USB port; and a networkconfigured to transfer data between the first and second devicesaccording to USB protocol and including a hybrid link; wherein thehybrid link is configured to deliver contents for the USB protocol bytransmitting at least one line state information packet and at least oneUSB data packet between the upstream USB port and the downstream USBport, the line state information packet containing packetized line stateinformation about one or more events.
 2. The system of claim 1, whereinthe hybrid link is configured to implement a USB enumeration protocoland a USB Suspend/Resume protocol through the network in accordance withthe line state information packet, the USB enumeration protocolcomprising one of: a high speed enumeration protocol; a full speedenumeration protocol; and a low speed enumeration protocol.
 3. Thesystem of claim 1, wherein at least one of the first device and thesecond device is a DiiVA device; and wherein the network is a DiiVAnetwork and the hybrid link is a DiiVA bi-directional link that isconfigured to transmit bi-directional multi-protocol data there throughwithout guaranteeing data delivery time.
 4. The system of claim 1,wherein the events comprise at least one of: a LineChange event, a USBReset event, a 3 ms Idle event, a VBus detect event, a VBus Enableevent, a USB_Host_Not Ready Event, a Keep Alive Event, a FS Device ReadyEvent, a LS Device Ready Event, and a Device Disconnect Event; andwherein the LineChange event comprises at least one of a SE0 (SingleEnded Zero) event, a J State Event, and a K State event.
 5. The systemof claim 1, wherein the first and second device each include a USB PHY(physical layer) connected to logical module through an interface; andwherein the first and second device further include a transceiver havingbi-directional connection and configured to carry and sharemulti-protocol data.
 6. The system of claim 5, wherein the interfacecomprises one of UTMI (USB 2.0. Transceiver Macrocell Interface) andULPI (UTMI+ Low Pin Interface).
 7. The system of claim 1, wherein theupstream USB port and the downstream USB port is respectively one of: atransmitting USB port configured to packetize and transmit all of theline state information; and a receiving USB port configured to set theinterface to emulate the LineState behavior of the transmitting USBport.
 8. The system of claim 1, wherein at least one of the first andsecond devices includes a plurality of USB ports.
 9. The system of claim1, wherein the USB host controller is further configured to performthrough the network at least one of: USB flow control protocol; USB PINGprotocol; USB Address Management; and USB low speed Keep-Alivesignaling.
 10. The system of claim 1, wherein the network includes acable having both uni-directional and bi-directional links.
 11. A methodof communicating USB data through a network that connects a first deviceto a second device, comprising: communicating at least one LineStateInformation packet between an upstream USB port and a downstream USBport through a bi-directional hybrid link in the network, the upstreamUSB port connecting the first device to a USB host controller and thedownstream USB port connecting the second device to a USB device;communicating at least one USB data packet through the bi-directionalhybrid link between the upstream USB port and the downstream USB port;and performing USB enumeration and USB Suspend/Resume operations usingthe LineState Information packet; wherein the LineState informationpacket packetizes information about one or more events.
 12. The methodof claim 11, wherein the one or more events comprise at least one of: aLineChange event, a USB Reset event, a 3 ms Idle event, a VBus detectevent, a VBus Enable event, a USB_Host_Not Ready Event, a Keep AliveEvent, a FS Device Ready Event, a LS Device Ready Event, and a DeviceDisconnect Event; and wherein the LineChange event comprises at leastone of: a SE0 (Single Ended Zero) event, a J State Event, and a K Stateevent.
 13. The method of claim 11, wherein the network is a DiiVAnetwork, and the bi-directional hybrid link is configured to transmitbi-directional multi-protocol data therethrough without guaranteeingdata delivery time.
 14. The method of claim 11, wherein USB enumerationcomprises High Speed enumeration; and wherein the act of performing HighSpeed enumeration comprises: sending an FS Device Ready event packet tothe upstream USB port, after a high-speed USB device has been attachedto the downstream USB port; attaching the USB host controller, and whenVBus has been asserted, the upstream USB port sending VBus detect eventpacket to the downstream USB port and deasserting VBus in downstream USBport; the upstream USB port sending VBus Enable event packet to thedownstream USB port, and the downstream USB port asserting Vbus; thedownstream USB port detecting J State, and sending J State event packet;the upstream USB port detecting USB Reset from the USB host controllerand sending USB Reset event packet; detecting J State in the upstreamUSB port and sending the J State Event packet to the downstream USBport; detecting K Chirp in the upstream USB port and sending the K StateEvent packet to the downstream USB port; detecting SE0 State in theupsteam USB port and sending the SE0 State Event packet to thedownstream USB port; detecting toggling K-J Chirps in the downstream USBport and sending the K State Event packet and J State Event packet tothe upstream USB port; and detecting SOF packet from the USB host sothat high-speed enumeration is done.
 15. The method of claim 11, whereinUSB enumeration comprises Full Speed enumeration; and wherein the act ofperforming Full Speed enumeration comprises: attaching a full-speed USBdevice to the downstream USB port, and sending an FS Device Ready eventpacket to the upstream USB port; attaching the USB host controller, andwhen VBus is asserted, the upstream USB port sending VBus detect eventpacket to downstream USB port and deasserting VBus in the downstream USBport; the upstream USB port sending VBus Enable event packet todownstream USB port, and the downstream USB port asserting Vbus; thedownstream USB port detecting J State, and sending J State event packet;the upstream USB port detecting USB Reset from the USB host controllerand sending USB Reset event packet; detecting J State in upstream USBport and sending J State Event packet to the downstream USB port; anddetecting SOF packet from the USB host so that full-speed enumeration isdone.
 16. The method of claim 11, wherein USB enumeration comprises LowSpeed enumeration and wherein the act of performing Low Speedenumeration comprises: attaching a low-speed USB device to thedownstream USB port and sending a LS Device Ready event packet to theupstream USB port; attaching the USB host controller, and when VBus isasserted, the upstream USB port sending VBus detect event packet to thedownstream USB port and deasserting VBus in the downstream USB port; theupstream USB port sending VBus Enable event packet to the downstream USBport, and the downstream USB port asserting Vbus; the downstream USBport detecting K State, and sending K State event packet; the upstreamUSB port detecting USB Reset from the USB host controller and sendingUSB Reset event packet; the upstream USB port detecting K state, andsending the K State Event packet to the downstream USB port; anddetecting SOF packet from the USB host so that low-speed enumeration isdone.
 17. The method of claim 11, further comprising performing Suspendand Resume; wherein the act of performing Suspend and Resume comprises:detecting a 3 ms Idle State, and generating a 3 ms Idle event packet anddelivering same to downstream port; if previous speed was high-speedUSB, upstream port checking whether 3 ms idle is suspend state or USBReset according to USB specification and UTMI specification; and ifupstream USB port detects K State, upstream USB port generating K Stateevent packet and going to Resume state.
 18. The method of claim 11,further comprising an act of delivering the USB data through the hybridlink with a non-isochronous IN token, the act comprising: the upstreamUSB port receiving IN packet and delivering same to the downstream USBport; the downstream USB port sending the IN packet and receiving a Datapacket or a handshake packet from the USB device; the upstream USB portsending NAK packet and blocking the next incoming IN packet with NAKpacket until response from the USB device is available; if the USBdevice sends NAK packet for IN packet and NAK packet arrives at upstreamUSB port from downstream USB port, the upstream USB port unblocking thenext incoming IN packet and delivering to downstream port to send INpacket to the USB device again; if the USB device sends a DATA0 or aDATA1 packet and the DATA0 or the DATA1 packet arrives in the upstreamUSB port, the downstream USB port responding with an ACK packet anddelivering the DATA0 or the DATA1 packet to the upstream port; and theupstream port sending the DATA0 or DATA1 packet for the next availableIN packet.
 19. The method of claim 11, further comprising an act ofdelivering the USB data with a non-isochronous OUT token, the actcomprising: the upstream USB port receiving an OUT packet and either aDATA0 or a DATA1 packet and delivering to the downstream USB port; thedownstream USB port buffering the OUT packet until the DATA0 or theDATA1 packet is available, and when the DATA0 or the DATA1 packet isavailable, sending the OUT packet and the DATA0 or the DATA1 packet tothe USB device; the upstream USB port sending a NAK packet for the OUTtransaction and not delivering the next incoming OUT packet and DATA0 orDATA1 packet until the response from the downstream USB port isavailable; if the USB device sends a NAK packet for the OUT transactionand the downstream USB port sends a NAK packet to the upstream USB port,the upstream USB port delivering the next incoming OUT packet and theDATA0 or DATA1 packet to the downstream port again; and if the USBdevice sends an ACK packet, the upstream port sending ACK for the nextOUT transaction.
 20. The method of claim 11, wherein the USB devicecomprises an isochronous USB device, and further comprising an act ofdelivering the USB data with an isochronous IN token, the actcomprising: the DATA packet using zero data and pipelining IN Data,wherein the number of states for IN DATA depends on latency ofconnection; for first, or first multiple, isochronous IN packets, theupstream USB port responding with one or more zero data packets;delivering said first, or first multiple, IN packets to the USBdownstream port and receiving the DATA0 or DATA1 or DATA2 packet fromthe isochronous USB device; pipelining these DATA packets to reply withisochronous IN packets; if the USB host stops sending isochronous INpackets, dropping the last and remaining DATA; and the upstream USB portfinding out which endpoint and address are used for isochronousendpoint, by monitoring and decoding USB descriptor from DATA packetstream.
 21. The method of claim 11, further comprising an act ofdelivering the USB data through the hybrid link with an isochronous OUTtoken, the act comprising: sending an isochronous OUT transaction out tothe downstream port, wherein the upstream port does not send accordingto USB protocol; the downstream USB port buffering OUT packet untilDATA0 or DATA1 or DATA2 or MDATA packet is available; when DATA0 orDATA1 or DATA2 or MDATA packet is available, sending OUT packet andDATA0 or DATA1 or DATA2 or MDATA packet to the USB device; and theupstream USB port finding out which endpoint and address are used forisochronous endpoint by monitoring and decoding USB descriptor from DATApacket stream.
 22. The method of claim 11, wherein the upstream USB portis configured to respond with NAK packet to OUT transaction; and furthercomprising an act of delivering the USB data using a USB PING packet,the act comprising: the upstream USB port responding with NAK packet toOUT transaction; the upstream USB port responding with NAK packet, anddelivering PING packet to the downstream USB port; the upstream USB portnot delivering PING packet, and continuing to send NAK packet until theresponse from USB device is available; if the USB device responds withACK packet for OUT transaction, the upstream USB port responding withACK packet for the next incoming PING packet and responding with ACKpacket for the next OUT transaction; wherein the last OUT transaction isnot delivered to the downstream USB port; if the USB device respondswith NAK packet for OUT transaction and the NAK packet is delivered toupstream USB port, the upstream USB port delivering next PING packet tothe downstream USB port; if the USB device responds with NAK packet withPING packet and the NAK packet is delivered to the upstream USB port,the upstream USB port delivering the next PING packet to the downstreamUSB port; if the USB device responds with ACK packet with PING packetand the ACK packet is delivered to upstream USB port, the upstream USBport responding with the ACK packet for next PING packet; the next OUTtransaction responding with ACK packet; and delivering these OUT packetsand DATA0 or DATA1 packets to the downstream USB port to send to the USBdevice.
 23. The method of claim 11, wherein there is no preceding OUTtransaction before the upstream USB port, and further comprising an actof delivering the USB data using a USB PING packet, the act comprising:the upstream USB port responding with NAK packet and delivering PINGpacket to the downstream USB port; the upstream USB port not deliveringPING packet and continuing to send NAK packet until response from theUSB device is available; if the USB device responds with ACK packet forPING packet and ACK packet is delivered to the upstream USB port, theupstream USB port responding with ACK packet for the next PING packetand responding with ACK for the next OUT transaction; and delivering theOUT packet and DATA0 or DATA1 packets to the downstream USB port. 24.The method of claim 11, further comprising an act of USB addressmanagement in the network, the act comprising: after USB reset isdetected in the upstream USB port, the upstream USB port accepting onlypackets that have USB address; the upstream port recognizing which USBaddress is assigned to the USB device in the downstream port bymonitoring and decoding SET_ADDRESS standard USB device request; afterdetecting SET_ADDRESS standard USB device request, the upstream portonly responding with packets with new USB address which is assigned withSET_ADDRESS standard USB device request; and USB Reset resetting theassigned USB address to 0 and waiting for SET_ADDRESS standard USBdevice request again.
 25. The method of claim 11, further comprising anact of USB Keep-Alive signaling in the network, the act comprising:after low-speed USB enumeration is completed, the upstream USB portstarting to monitor linestate; when first change of linestate isdetected, considering that to be the first Keep-Alive signaling; and theupstream USB port setting the internal timer for T_KEEP_ALIVE and whenit is expired, the upstream USB port monitoring whether linestate istoggling again, to detect Keep-Alive and deliver Keep Alive event packetto the downstream USB port.
 26. The method of claim 25, whereinT_KEEP_ALIVE is set to between about 0.95 ms and about 0.99 ms.